home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / nihcl-30.lha / nihcl-3.0 / lib / OIOstream.h < prev    next >
C/C++ Source or Header  |  1990-05-19  |  4KB  |  116 lines

  1. #ifndef    OIOSTREAM_H
  2. #define    OIOSTREAM_H
  3.  
  4. /*$Header: /afs/alw.nih.gov/unix/sun4_40c/usr/local/src/nihcl-3.0/share/lib/RCS/OIOstream.h,v 3.0 90/05/20 00:20:34 kgorlen Rel $*/
  5.  
  6. /* OIOstream.h -- declarations for stream Object I/O abstract classes
  7.  
  8.     THIS SOFTWARE FITS THE DESCRIPTION IN THE U.S. COPYRIGHT ACT OF A
  9.     "UNITED STATES GOVERNMENT WORK".  IT WAS WRITTEN AS A PART OF THE
  10.     AUTHOR'S OFFICIAL DUTIES AS A GOVERNMENT EMPLOYEE.  THIS MEANS IT
  11.     CANNOT BE COPYRIGHTED.  THIS SOFTWARE IS FREELY AVAILABLE TO THE
  12.     PUBLIC FOR USE WITHOUT A COPYRIGHT NOTICE, AND THERE ARE NO
  13.     RESTRICTIONS ON ITS USE, NOW OR SUBSEQUENTLY.
  14.  
  15. Author:
  16.     K. E. Gorlen
  17.     Computer Systems Laboratory, DCRT
  18.     National Institutes of Health
  19.     Bethesda, MD 20892
  20.     May, 1989
  21.  
  22. Modification History:
  23.  
  24. $Log:    OIOstream.h,v $
  25.  * Revision 3.0  90/05/20  00:20:34  kgorlen
  26.  * Release for 1st edition.
  27.  * 
  28. */
  29. #include "OIO.h"
  30.  
  31. class OIOistream : public OIOin {
  32. protected:
  33.     istream* strm;        // input stream
  34.     void checkRead() const;
  35.     OIOistream& putback(char c) { strm->putback(c); return *this; }
  36.     void syntaxErr(const char* expect, char was) const;
  37.     virtual Object* readObject(const Class&) = 0;
  38. public:
  39.     OIOistream(istream& s)    { strm = &s; }
  40.     operator istream&()    { return *strm; }
  41.     virtual OIOin& operator>>(char*);
  42.     virtual OIOin& operator>>(char&);
  43.     virtual OIOin& operator>>(unsigned char&);
  44.     virtual OIOin& operator>>(short&);
  45.     virtual OIOin& operator>>(unsigned short&);
  46.     virtual OIOin& operator>>(int&);
  47.     virtual OIOin& operator>>(unsigned int&);
  48.     virtual OIOin& operator>>(long&);
  49.     virtual OIOin& operator>>(unsigned long&);
  50.     virtual OIOin& operator>>(float&);
  51.     virtual OIOin& operator>>(double&);
  52.     virtual OIOin& operator>>(streambuf*);
  53.     virtual int get();
  54.     virtual OIOin& get(char&);
  55.     virtual OIOin& get(unsigned char&);
  56.     virtual OIOin& get(char*, unsigned size);
  57.     virtual OIOin& get(unsigned char*, unsigned size);
  58.     virtual OIOin& get(short*,unsigned size);
  59.     virtual OIOin& get(unsigned short*,unsigned size);
  60.     virtual OIOin& get(int*,unsigned size);
  61.     virtual OIOin& get(unsigned int*,unsigned size);
  62.     virtual OIOin& get(long*,unsigned size);
  63.     virtual OIOin& get(unsigned long*,unsigned size);
  64.     virtual OIOin& get(float*,unsigned size);
  65.     virtual OIOin& get(double*,unsigned size);
  66.     virtual OIOin& get(streambuf&, char delim ='\n');
  67.     virtual OIOin& getCString(char*, unsigned maxlen);
  68.     virtual int precision();
  69.     virtual int precision(int);
  70.     virtual int width();
  71.     virtual int width(int);
  72. };
  73.  
  74. class OIOostream : public OIOout {
  75. protected:
  76.     ostream* strm;            // output stream
  77.     unsigned col;            // current column
  78.     static const unsigned MAXCOL;    // max columns in output line
  79.     void putwrap(char);
  80.     void putwrap(unsigned char c) { putwrap((char)c); }
  81.     void putwrap(const char* s, unsigned len);
  82.     virtual void storeObject(const Object&) = 0;
  83. public:
  84.     OIOostream(ostream& s)    { strm = &s; col = 0; }
  85.     operator ostream&()    { return *strm; }
  86.     virtual OIOout& operator<<(const char*);
  87.     virtual OIOout& operator<<(char);
  88.     virtual OIOout& operator<<(unsigned char);
  89.     virtual OIOout& operator<<(short);
  90.     virtual OIOout& operator<<(unsigned short);
  91.     virtual OIOout& operator<<(int);
  92.     virtual OIOout& operator<<(unsigned);
  93.     virtual OIOout& operator<<(long);
  94.     virtual OIOout& operator<<(unsigned long);
  95.     virtual OIOout& operator<<(float);
  96.     virtual OIOout& operator<<(double);
  97.     virtual OIOout& put(char);
  98.     virtual OIOout& put(const char* val, unsigned size);
  99.     virtual OIOout& put(const unsigned char* val, unsigned size);
  100.     virtual OIOout& put(const short* val, unsigned size);
  101.     virtual OIOout& put(const unsigned short* val, unsigned size);
  102.     virtual OIOout& put(const int* val, unsigned size);
  103.     virtual OIOout& put(const unsigned int* val, unsigned size);
  104.     virtual OIOout& put(const long* val, unsigned size);
  105.     virtual OIOout& put(const unsigned long* val, unsigned size);
  106.     virtual OIOout& put(const float* val, unsigned size);
  107.     virtual OIOout& put(const double* val, unsigned size);
  108.     virtual OIOout& putCString(const char*);
  109.     virtual int precision();
  110.     virtual int precision(int);
  111.     virtual int width();
  112.     virtual int width(int);
  113. };
  114.  
  115. #endif /* OIOSTREAM_H */
  116.